package aterrizar;

import aterrizar.exceptions.AsientoNoDisponibleException;
import aterrizar.exceptions.AsientoYaLiberadoException;

public class Asiento {

	public enum EstadoAsiento {
		DISPONIBLE, NO_DISPONIBLE
	}

	private Clase clase;
	private EstadoAsiento estado;

	public Asiento(Clase clase, EstadoAsiento estado) {
		this.clase = clase;
		this.estado = estado;
	}
	
	public Asiento(Clase clase) {
		this.clase = clase;
		this.estado = EstadoAsiento.DISPONIBLE;
	}
	
	public void reservar() throws AsientoNoDisponibleException {
		if (estado.equals(EstadoAsiento.NO_DISPONIBLE)) {
			throw new AsientoNoDisponibleException(
					"El asiento no esta disponible");
		} else {
			estado = EstadoAsiento.NO_DISPONIBLE;
		}
	}

	public boolean estoyDisponible() {
		if (estado.equals(EstadoAsiento.DISPONIBLE)) {
			return true;
		}
		return false;
	}
	
	public void liberar() throws AsientoYaLiberadoException {
		if (estado.equals(EstadoAsiento.DISPONIBLE)) {
			throw new AsientoYaLiberadoException("El asiento ya fue liberado");
		} else {
			estado = EstadoAsiento.DISPONIBLE;
		}
	}

	public Clase getClase() {
		return clase;
	}

}
